home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SPACE 2
/
SPACE - Library 2 - Volume 1.iso
/
utility
/
444
/
utility2
/
calljams.lst
< prev
next >
Wrap
File List
|
1989-08-15
|
7KB
|
181 lines
' *****************************************************************************
' * *
' * CALLJAMS.BAS: Ein Beispielprogramm, das zeigt, wie man JAMES.ACC *
' * von anderen GEM-Programmen her aufrufen kann. *
' * *
' * * * * SO KANN _IHR_ PROGRAMM AUCH VON DEN MÖGLICHKEITEN VON * * * *
' * * * * JAMES, DEM DESKTOP-BUTLER PROFITIEREN ! ! ! * * * *
' * *
' *****************************************************************************
'
Dim Gem$(30)
'
' Initialisierung...
'
Deffill 1,2,4
Pbox -1,-1,640,400 !Bitte das hier nicht nachmachen!!
Restore Men_zeile
Cntr%=-1
Repeat !Menü aufbauen
Inc Cntr%
Read Gem$(Cntr%)
Until Gem$(Cntr%)="****"
'
@Appl_find("JAMES ") !Name muß auf 8 zeichen aufgefüllt werden!
If Rreturn%=-1
Alert 3,"JAMES.ACC nicht gefunden:|Entweder wurde das ACC um-|benannt oder ist nicht im|System.",1,"Abbruch",Wert%
End
Else
James_id%=Rreturn%
Alert 1,"AP_ID von James: "+Str$(James_id%),1," OK ",Wert%
Endif
'
Menu Gem$()
On Menu Gosub Verzweige !Normale Menüleistenverwaltung
On Menu Message Gosub James_antwortet !`EVNT_MESSAGE`
'
My_ap_id%=0 !Die AP_ID des GFABASIC: Sollte eigentlich mit APPL_INIT
' !richtig bestimmt werden.
'
Do !Die EVNT_MULTI-Schleife
On Menu
Loop
'
Procedure Verzweige !Reaktion auf Menüleiste
Local Wert%
'
Qq%=Menu(0)
If Qq%=1
@Info
Endif
On Qq%-10 Gosub Pling,D,Ende,D,D,Call_m1,Cm2,Cm2,Cm3,Cm3,Cm4,D,Cm0
Menu Off
Return
'
Procedure Info !Menüpkt. info
Local Wert%
Alert 1,"Beispielprogramm zum |Aufruf von 'JAMES'.| |(PRG by Pascal Fellerich)",1," OK ",Wert%
Return
'
Procedure Pling !WITZIG!!!
Print "◆";
Return
'
Procedure Call_m1 !Main Menu aufrufen
@James(1)
Return
'
Procedure Cm2 !PRN_AUX-Menu aufrufen
@James(2)
Return
'
Procedure Cm3 !DISK-Menü aufrufen
@James(3)
Return
'
Procedure Cm4 !SETUP-MENU aufrufen
@James(4)
Return
'
Procedure Cm0 !James nach seiner Versionsnummer fragen
@James(0)
Return
'
Procedure Ende
Alert 2,"Wie denn? War das |etwa schon alles??",2," NEIN |JA",Wert%
If Wert%=2
Menu Kill
End
Endif
Return
'
Procedure D !Dummyfunktion
Print Qq%
Return
'
' **********************************************************************
' * *
' * SO SCHICKT MAN JAMES EINE NACHRICHT: *
' * Eine Message besteht aus 16 Bytes (8 Words). Dabei sind: *
' * Word 0: OpCode (für James) *
' * Word 1: AP_ID des Aufrufenden Programmes *
' * Word 2: 0 (immer!, wird von J. nicht beachtet) *
' * Word 3 bis 7: 0, werden nicht beachtet *
' * *
' * Dabei ist OpCode: $100 -> Versionsnummer fragen (siehe auch *
' * Procedure James_antwortet) *
' * $101 -> Call Main Menu *
' * $102 -> Call PRN-AUX-Menu *
' * $103 -> Call Disk-Menu *
' * Wenn eine Dialogbox von James so aufgerufen wird, dann sperrt *
' * James vorsichtshalber das AES mit dem Aufruf 'WIND_UPDATE(2)' *
' * [begin Mcontrol]. *
' * *
' **********************************************************************
Procedure James(N%) !Mit Hilfe von APPL_WRITE bekommt James eine
If N%<0 Or N%>4 !Message geschickt.
Goto Xx
Endif
N%=N%+&H100
A$=String$(20,0)
Dpoke Varptr(A$),N%
Dpoke Varptr(A$)+2,My_ap_id% !Aufrufer apid
@In(2,1,1,0)
Dpoke Gintin,James_id%
Dpoke Gintin+2,16
Lpoke Addrin,Varptr(A$)
Gemsys 12
Xx:
Return
'
Procedure Appl_find(A$)
A$=A$+Chr$(0)
@In(0,1,1,0)
Lpoke Addrin,Varptr(A$)
Gemsys 13
Rreturn%=Dpeek(Gintout)
If Rreturn%>&H7FFF !in Assembler: ext.l INTOUT
Rreturn%=Rreturn% Or &HFFFF0000
Endif
Return
'
Deffn Rreturn=Dpeek(Gintout)
Procedure In(G2%,G4%,G6%,G8%)
Dpoke Gcontrl+2,G2%
Dpoke Gcontrl+4,G4%
Dpoke Gcontrl+6,G6%
Dpoke Gcontrl+8,G8%
Return
'
' **********************************************************************
' * *
' * SO ANTWORTET JAMES auf die Versions-Frage (OPCODE $100) *
' * *
' * Im Message Buffer der aufrufenden Applikation findet sich *
' * folgendes: Word 0: $100 *
' * Word 1: AP_ID von James *
' * Word 2: 0 *
' * Word 3: Haupt-Revision von James *
' * Word 4: Unter-Revision von James *
' * Word 5: TOS Version. ($104 für TOS 1.4) *
' * Word 6 & 7: ???? *
' * *
' **********************************************************************
Procedure James_antwortet
If Menu(2)=James_id%
J_hiversion%=Menu(4)
J_loversion%=Menu(5)
Tos_version%=Menu(6)
Jversion$=Str$(J_hiversion%)+"."+Str$(J_loversion%)
Alert 3,"James meldet zurück:|>JAMES V "+Jversion$+"<|>TOS-Version "+Hex$(Tos_version%)+"<",1," OK ",Wert%
Endif
Return
'
Men_zeile:
Data Desk , Info ,--------------------,-1,-2,-3,-4,-5,-6,
Data File , Pling! ,---------------, Ende ,
Data Butler , Hauptmenü , RS-232 Params, Printer Config, Schreibschutz
Data Antivirus..., Setup...,------------------, James Version...,,,
Data ****
End